home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / umich / diskutil / gemar220.lzh / GEMAR220 / XFS / DOCS / README.1ST next >
Encoding:
Text File  |  1994-03-05  |  12.2 KB  |  347 lines

  1.  
  2. GEMAR-XFS-Treiber  -  Restore per Desktop             (c) Steffen Engel '93
  3.  
  4. Version 1.20 vom 05.03.94
  5.  
  6.  
  7. MiNT kann aufgrund von MultiTOS bald als System für jedermann angesehen 
  8. werden. Daher ist es sehr interessant, einen Treiber einzubinden, der 
  9. Streamer-Bänder als logisches Laufwerk anmeldet.
  10.  
  11. Diesem Zweck dient GEMAR.XFS
  12.  
  13. Einerseits können Bänder von GEMAR als Laufwerk eingeblendet werden, so daß 
  14. Dateien direkt über das Desktop kopiert werden können, andererseits wird ein 
  15. Device-Treiber installiert, mit dem Sie direkt auf den Streamer zugreifen 
  16. können (u:\dev\mt).
  17. Der Device-Driver dient dazu, daß ALLE Programme auf den Streamer zugreifen 
  18. können, denn dieses Device entspricht im Zugriff einer Datei.
  19.  
  20.  
  21. LIEFERUMFANG:
  22.  
  23.   Der Treiber ist nur für registrierte GEMAR-Benutzer erhältlich und kostet 
  24.   DM 30,-
  25.  
  26.   Die Registrierung erfolgt über das Programm REG_XFS.PRG
  27.  
  28. VORAUSSETZUNGEN
  29.  
  30.   Sie benötigen selbstverständlich einen Streamer, sowie MiNT oder MultiTOS.
  31.   Für die Verwendung des XFS MUSS der Streamer Rückwärts-Spacing beherrschen. 
  32.   Im Allgemeinen können das heutzutage alle Streamer, aber ältere Geräte 
  33.   unterstützen dies nicht immer (zB Tandberg TDC 3620 mit Firmware 3.0)
  34.  
  35.  
  36. INSTALLATION
  37.  
  38.   Kopieren Sie GEMAR.XFS in Ihr MiNT/MultiTOS-Verzeichnis (C:\MINT\ oder 
  39.   C:\MULTITOS\
  40.  
  41.   Kopieren Sie die Datei GEMARXFS.PAR in eines der Verzeichnisse C:\MINT\, 
  42.   C:\MULTITOS\, C:\SYS\ oder C:\
  43.  
  44.   Passen Sie die Datei GEMARXFS.PAR an Ihre Bedürfnisse an (siehe unter 
  45.   'PARAMETER')
  46.  
  47.   Kopieren Sie TAPE.TTP in ein Verzeichnis, in dem es von Ihrer Shell 
  48.   gefunden wird.
  49.  
  50.   Kopieren Sie GEMARCNF.CPX in Ihr CPX-Verzeichnis.
  51.  
  52.   Bei dem nächsten Booten mit MiNT/MultiTOS ist der Treiber installiert.
  53.  
  54.  
  55. VERWENDUNG DES XFS
  56.  
  57.   Das Einbinden eines GEMAR-Backups als logisches Laufwerk können Sie 
  58.   entweder über das CPX oder über TAPE.TTP steuern.
  59.   Zur Verwendung von TAPE.TTP sollten Sie die beiliegende Manual-Page lesen.
  60.  
  61.   Ein GEMAR-Backup wird als Laufwerk eingeblendet, indem im CPX-Modul der 
  62.   Button 'XFS laden' angewählt wird. Nach dem Einlesen des Index vom Band 
  63.   steht der Inhalt des Bandes in dem in der Parameterdatei angegebenen 
  64.   Laufwerk zur Verfügung.
  65.  
  66.   Von diesem Laufwerk aus können Sie Dateien kopieren, Programme starten und 
  67.   alles andere, was mit einer Festplattenpartition auch geht.
  68.  
  69.   Was jedoch nicht funktioniert, ist Dateien auf das Laufwerk zu kopieren. 
  70.  
  71.   ***************************** ACHTUNG!! ********************************** 
  72.  
  73.       Entnehmen Sie auf keine Fall das Band, ohne es vorher über das CPX 
  74.       oder TAPE.TTP entladen zu haben!
  75.  
  76.  
  77. VERWENDUNG DES DEVICE
  78.  
  79.   Laden Sie das Band über TAPE.TTP, oder über das CPX-Modul mit 'DEV laden'.
  80.   Danach können Sie mit ALLEN Programmen auf das Band zugreifen.
  81.  
  82.   Beachten Sie, daß es nicht möglich abwechselnd Daten zu lesen und zu 
  83.   schreiben. Dies ist mit SCSI-Streamern nicht möglich und liegt in der
  84.   Natur eines Streamers.
  85.   Entweder man schreibt vom Anfang des Bandes aus (dabei wird das Band 
  86.   gelöscht!!), oder sie spulen das Band an das Ende, bevor Sie auf das Band 
  87.   schreiben.
  88.  
  89.   Somit können Sie zum Beispiel zum Austausch von Daten mit anderen Systemen 
  90.   (OS9, Unix, Minx, Linux...) Bänder mit einem TAR schreiben/lesen.
  91.   Dazu geben Sie als Archiv einfach u:\dev\mt an.
  92.  
  93.   Beispiele
  94.  
  95.     tar -c u:\dev\mt c:\
  96.     Sichern aller Dateien von Laufwerk C: auf das Band
  97.  
  98.     tar -t u:\dev\mt
  99.     Inhaltsverzeichnis des TAR-Archives auf dem Band anzeigen.
  100.  
  101.   Genauso kann natürlich cpio verwendet werden, oder man sichert einfach aus 
  102.   einem Editor heraus eine Datei als U:\dev\mt.
  103.  
  104.   ***************************** ACHTUNG!! ********************************** 
  105.       Entnehmen Sie auf keine Fall das Band, ohne es vorher über das CPX 
  106.       oder TAPE.TTP entladen zu haben!
  107.  
  108.  
  109. PARAMETER
  110.  
  111.   Die Parameterdatei enthält alle nötigen Informationen für die Ansprache des 
  112.   Streamers und die Einbindung des Treibers.
  113.  
  114.   -DEVICE       = drv
  115.     Der Laufwerksbuchstabe, unter dem das XFS installiert wird.
  116.  
  117.   -XFSNAME      = name
  118.     Mit neueren Versionen von MiNT (>= 1.08) kann das Gerät unter einem 
  119.     Namen in U:\ angelegt werden. Wenn ein MiNT >= 1.08 aktiv und XFSNAME 
  120.     angegeben sind, wird das Gerät auf diese Weise angemeldet, ansonsten 
  121.     als das in DEVICE angegebene Laufwerk.
  122.     Der Ordner erscheint nur dann in Laufwerk U:, wenn ein Band als XFS 
  123.     geladen ist.
  124.     ACHTUNG: Bitte beachten Sie die Informationen zu EINSCHRÄNKUNGEN
  125.  
  126.   -BUFFER       = num
  127.     Größe des Puffers in kByte, der zur Pufferung von Lesezugriffen auf 
  128.     u:\dev\mt verwendet wird, wenn die Pufferung eingeschaltet ist.
  129.     Außerdem die Puffergröße für Schreibzugriffe auf u:\dev\mt (kann nicht 
  130.     abgeschaltet werden)
  131.  
  132.   -BUFFERED     = ON
  133.     Die Pufferung von u:\dev\mt beim Lesen. Als Default ist die Pufferung 
  134.     abgeschaltet, kann aber mittels TAPE.TTP jederzeit eingeschaltet 
  135.     werden.
  136.  
  137.   -PREMSGTIME   = num
  138.   -POSTMSGTIME  = num
  139.     Die von GEMAR als 'Wait vor SCSI' und 'Wait nach SCSI' bekannten Werte 
  140.     (in ticks)
  141.  
  142.   -DATATIMEOUT  = num
  143.   -LOADTIME     = num
  144.   -REWINDTIME   = num
  145.   -SPACETIME    = num
  146.     Die von GEMAR als 'Data-Timeout', 'Load-Timeout', 'Rewind-Timeout' und 
  147.     'Space-Timeout' bekannten Werte (in Sekunden)
  148.  
  149.   -BLOCKSIZE    = num
  150.     Die Blockgröße des Streamers
  151.  
  152.   -UNIT         = DMA|ALIA|TT|FALCON
  153.     Der Port, an dem der Streamer angeschlossen ist
  154.  
  155.   -TARGET       = num
  156.     Die Target-Nummer des Streamers. Wird bei TT|FALCON ignoriert
  157.  
  158.   -SCSIID       = num
  159.     Die SCSI-Id des Streamers. Wird bei DMA ignoriert
  160.  
  161.   -QFA          = NONE|SEEK|LOCATE
  162.     Fähigkeiten des Streamer zu Quick-File-Access.
  163.  
  164.   -CMD          = LOAD|UNIT_READY|MODE_SELECT|PREVENT_REMOVAL
  165.     Zu verwendende Kommandos des Streamers.
  166.     Geben Sie einfach die Parameter an, die Sie auch in GEMAR verwenden. 
  167.     Sollen mehrere Kommandos gesetzt werden, so können Sie die Zeile
  168.     mehrfach schreiben, z.B.
  169.  
  170.      CMD = LOAD
  171.      CMD = MODE_SELECT
  172.      CMD = PREVENT_REMOVAL
  173.  
  174.   -KEYFILE      = path\name
  175.     Die Lage des Keyfiles von GEMAR auf Ihrer Festplatte. Diese Datei wird 
  176.     beim Laden eines XFS benötigt, um zu erkennen, ob der vordere Index 
  177.     gültig ist.
  178.  
  179. INTERNA
  180.  
  181.   Falls virtuelles oder alternatives (FAST) RAM vorhanden ist, installiert 
  182.   GEMAR.XFS eine XFRB-Struktur:
  183.  
  184.   struct {
  185.       int version;   /* Version des XFRB-cookies, $0100 = 1.00 */
  186.       char *xflock;  /* extended flock, Semaphore */
  187.       char *buffer;  /* Adresse eines Puffers im ST-RAM, mindestens 64K */
  188.       long size;     /* Puffergröße */
  189.   } XFRB;
  190.  
  191.   Der XFRB stellt Gerätetreibern (z.B. für Streamer), insbesondere für die 
  192.   ACSI-Schnittstelle, eine Alternative zum _FRB des BIOS zur Verfügung und 
  193.   verhindert, daß es zu Kollisionen kommt, falls ein Festplattentreiber (z.B. 
  194.   bei Systemen mit virtuellem Speicher) zur gleichen Zeit den _FRB ansprechen 
  195.   will, wie der Gerätetreiber. Synchronisiert werden die Zugriffe über xflock. 
  196.   Ist die Semaphore gesetzt, darf also nur das Programm den XFRB benutzen, das 
  197.   die Semaphore gesetzt hat.
  198.  
  199.  
  200.   Fals die Struktur bereits von einem anderen Programm angelegt ist, wird sie 
  201.   vom Treiber benutzt. GEMAR benutzt ebenfalls diesen Puffer, wenn er vorhanden 
  202.   ist.
  203.  
  204.  
  205.  
  206. EINSCHRÄNKUNGEN
  207.  
  208.   Die unregistrierte Version kann im XFS-Betrieb nur 15 Dateien bearbeiten 
  209.   (15 mal Fopen).
  210.   Danach wird ein Zugriff mit EACCDN abgebrochen.
  211.  
  212.   Es ist nicht möglich auf dem Band Daten zu verändern, oder Daten auf das
  213.   Band zu kopieren. Dies liegt an der Technik von Streamern.
  214.  
  215.   Bei Streamern, die am Bandende auf Request Sense nicht BLANK CHECK, VADD 
  216.   und fehlende Blöcke in den Infobytes melden, kann der Treiber bei Reads 
  217.   von u:\dev\mt evtl. das Bandende nicht sauber erkennen.
  218.   Dies kann unter Umständen zu ewigem Lesen verdonnern (zB TAR auf einem
  219.   Band ohne Abschluß-Header)
  220.  
  221.   Zur Zeit kann nur das erste Backup auf dem Band bearbeitet werden.
  222.  
  223.   Verschlüsselte Backups (Password) können nicht benutzt werden.
  224.  
  225.   Bänder, die mit GEMAR < 2.0 geschrieben wurden, können nicht gelesen 
  226.   werden.
  227.  
  228.   In MiNT 1.08 und 1.09 sind zwei Fehler, die leider große Schwierigkeiten mit
  229.   XFS-Treibern machen, die nicht auf der Festplatte liegen.
  230.   Daher muß man entweder MiNT 1.04 verwenden, oder die folgenden Patches in 
  231.   MiNT machen:
  232.  
  233. ****************************************************************************
  234.  
  235.   MiNT 1.08:
  236.   Korrektur von FILESYS.C durchführen:
  237.   In Prozedur disk_changed:
  238.  
  239.   *************************** FILESYS.C *******************************
  240.   TRACE(("calling mediach(%d)",d));
  241.     r = (int)mediach(d);
  242.   TRACE(("mediach(%d) == %d", d, r));
  243.   
  244.     if (r < 0) return r;
  245.   
  246.     if (r == 1) {   /* drive _may_ have changed */
  247.       r = rwabs(0, tmpbuf, 1, 0, d, 0L);  /* check the BIOS */
  248.       if (r != E_CHNG) {      /* nope, no change */
  249.         TRACE(("rwabs returned %d", r));
  250.         return (r < 0) ? r : 0;
  251.       }
  252.       r = 2;      /* drive was definitely changed */
  253.     }
  254.   *********************************************************************
  255.   
  256.   Dabei hat Eric leider eins nicht bedacht:
  257.   
  258.   -mediach ruft den Festplattentreiber auf (callext1 auf hdv_mediach)
  259.    Dieser kennt natürlich nur Festplattenlaufwerke und keine XFS-Treiber 
  260.    die nicht auf der Platte aufsetzen (CD-ROM, RAMFS, Streamer).
  261.    Daher antwortet der Treiber mit EUNDEV und MiNT meldet das Laufwerk als 
  262.    fehlerhaft.
  263.   
  264.   Daher folgende Änderung:
  265.   
  266.   ************************* FILESYS.C *********************************
  267.   TRACE(("calling mediach(%d)",d));
  268.     r = (int)mediach(d);
  269.   TRACE(("mediach(%d) == %d", d, r));
  270.   
  271.     /* r = EUNDEV:
  272.      * maybe the drive is not based on Harddisk, so the HDdriver says 
  273.      * EUNDEV.
  274.      * Ask the Filesystem for Mediachange.
  275.      * SE 16.08.93
  276.      */
  277.     if (r == EUNDEV)
  278.       {
  279.       TRACE(("request XFS for media change"));
  280.       fs = drives[d];   /* get filesystem associated with drive */
  281.       if (fs) 
  282.         if ((*fs->dskchng)(d)) { /* does the fs agree that it changed? */
  283.            drives[d] = 0;
  284.            changedrv(d); /* yes -- do the change */
  285.            return 1;
  286.            }
  287.            else return 0;
  288.       }
  289.     if (r < 0) return r;
  290.   *********************************************************************
  291.  
  292.  
  293. ***************************************************************************
  294.    FS_UNMOUNT kann nicht funktionieren, da in UNIFS.C in uni_fscntl der 
  295.    Filecookie nicht auf eine UNIFILE-Struktur zeigt, sondern auf eine 
  296.    Struktur des XFS.
  297.    Daher folgende Änderung, bis Eric sich dazu äußert:
  298.   
  299.   UNIFS.C in uni_fscntl: 
  300.   ********************************************************************
  301.     } else if (cmd == FS_UNMOUNT) {  /* remove a file system's directory */
  302.       struct fs_descr *d = (struct fs_descr*)arg;
  303.       FILESYS *fs;
  304.       UNIFILE *u;
  305.   
  306.     /* first check that directory exists */
  307.       r = uni_lookup(dir, name, &fc);
  308.       if (r != 0)  return EFILNF;   /* name does not exist */
  309.       if (!d) return EFILNF;
  310.       if (!d->file_system) return EFILNF;
  311.       if (d->file_system != fc.fs)
  312.         return EFILNF;  /* not the right name! */
  313.  
  314.           /* fc->index does not point to a UNIFILE struct, as i can see
  315.            * in uni_lookup.
  316.            * So I'll get u via search of u_root.
  317.            * With this modification FS_UNMOUNT works fine with my XFS.
  318.            * SE 30.08.93
  319.            */
  320.       for (u = u_root; u && u->fs != d->file_system; u = u->next)
  321.       {
  322.       }
  323.  
  324.   /*   u = (UNIFILE*)fc.index; Korrigiert: SE 30.08.93 */
  325.   #endif
  326.   ***************************************************************************
  327.  
  328.  
  329. HISTORY
  330.     -1.0 vom 15.10.93:
  331.       erstes öffentliches Release
  332.  
  333.     -1.01 vom 27.10.93
  334.       -Wie es kommen mußte: ein kleiner Bug führte dazu, daß der SCSI-Port des
  335.        Falcon nicht angesprochen werden konnte.
  336.  
  337.     -1.10 vom 05.03.94
  338.       -Installation von XFRB 1.01
  339.       -Interne Änderungen an den SCSI-Libs.
  340.       -Wie auch in GEMAR keine Unterscheidung mehr zwischen Falcon und 
  341.        TT-SCSI. Im Parameterfile kann jetzt einfach 'SCSI' verwendet 
  342.        werden.
  343.  
  344.  
  345.  
  346. Steffen Engel, 05.03.93
  347.